#pragma once

#include <iostream>
#include <cstring>
#include <string>
#include <vector>

// 1. 报文和报文之间，采用特殊字符来进行粘包问题
// 2. 获取一个独立完整的报文序列化和反序列化 -- 自定义
// 1+1X1+1

#define SEP "X"
#define SEP_LEN strlen(SEP)

// 我们要把传入进来的缓冲区进行切分
// 1. buffer被切走的，也同时要从buffer中移除
// 2. 可能会存在多个报文，多个报文依次放入out
// buffer: 输入输出型参数
// out: 输出型参数
void SpliteMessage(std::string &buffer, std::vector<std::string>* out)
{
    while (true)
    {
        auto pos = buffer.find(SEP);
        if (std::string::npos) break;
        std::string message = buffer.substr(0, pos);
        buffer.erase(pos+SEP_LEN);
        out->push_back(message);
    }
}